| ..:: Menu ::.. | ..:: Piszemy wygaszacz ekranu w stylu Matrixa ::.. | ..::Info i Reklamy::.. |
|
Strona Główna Kursy DELPHI Kursy C++ Linki Forum Download Seriale Humor Reklama O autorze |
Piszemy wygaszacz ekranuStandardowy wygaszacz Windows posiada rozszerzenie *.scr. Musi je posiadać :) Nic prostszego. Wystarczy zmienić rozszerzenie na *.scr i skopiować program do katalogu Windows. Nie jest to takie łatwe. Trzeba bowiem oprogramować zdarzenie "OnMouseMove" odpowiadające za ruchy myszką oraz "OnKeyPress" odpowiadające za naciśnięcie przycisku klawiatury. Nasz wygaszacz ekranu będzie się nazywał "Matrix". Pokazywał on będzie i zsuwał napisany tak jak w Matrixie :)Zacznijmy więc: 1. Przede wszystkim zmień właściwość "WindowState" formy na "wsMaximized". Spowoduje to, że forma będzie wyświetlana na całym ekranie. 2. Zmień właściwość "BorderStyle" na "bsNone". To powoduje ukrycie paska głównego formy. 3. Teraz trzeba się zabezpieczyć przed ponownym uruchamianiem tego samego egzemplarza programu. W "OnCreate" wpisz na początek taki tekst: procedure TMainFrm.FormCreate(Sender: TObject); var H : THandle; begin H := CreateFileMapping(THANDLE($FFFFFFFF),nil, PAGE_READONLY,0,32,'Screen'); { Jezeli aplikacja jest uruchomiona ( ALREADY_EXISTS ) to zamknij druga } if GetLastError=ERROR_ALREADY_EXISTS then begin Application.Terminate; CloseHandle(H); end; Color := clBlack; // kolor tla ShowCursor(FALSE); // ukryj kursor end; Omówienie początku tej procedury wykracza poza obszar niniejszego kursu. :) Następuje tutaj utworzenie obiektu. Gdyż jeynim błędem wykorzystania tej funkcji to może być błąd: "ERROR_ALREADY_EXISTS" ( program jest już w pamięci ) to dzięki temu można kontrolować ponowne uruchamianie programu. Jeżeli chcesz możesz o tym poczytać w Helpie ( wiem, że nie wszyscy znają perfekto anglika, ale.. ). Ta funkcja nazywa się tworzenie "obiektu odwzorowującego". O tym być może będziemy mówić kiedyś w Kurs Delph dla zaawansowanych" :)) A więc dzięki tej funkcji możesz kontrolować ponowne uruchamianie tego samego programu i odpowiednio zareagować. W tym wypadku zamykany zostaje program, który ponownie próbujesz uruchomić. Na samym końcu tej funkcji następuje zmiana koloru tła oraz ukrycie kursora. Tak funkcja "ShowCursor" pokazuje kursor ( parametr: True ) lub ukrywa ( False ). Teraz kolejna, a zarazem ostatnia funkcja "OnActivate". Uzupełnij więc procedurę "OnActivate" formy - wpisz taki text: procedure TMainFrm.FormActivate(Sender: TObject); var X, I, Count : Integer; Chars : Char; // zmienna oznaczajca znak ( pojedynczy ) begin Count := 0; // wyzeruj licznik while not (Done) do // Jezeli animacja jest uruchomiona... begin Canvas.Brush.Color := clBlack; // ustaw kolor tła Randomize; // wylosuj X := Random(Screen.DesktopWidth); // losuj pozycje Canvas.Font.Color := RGB(25, 255, 0); // ustaw kolor czcionki Canvas.Font.Size := 12; // rozmiar czcionki Inc(Count); // podnieś o jeden if Count = 30 then // Jezeli licznik rowna sie cyfrze 30... begin Repaint; //... odswiez ekran Count := 0; // wyzeruj licznik end; { Wykonuj petle. Zacznij od zera i kontynuuj do wylosowanego punktu } For I := 0 to Random(Screen.DesktopHeight) + 100 do BEGIN Application.ProcessMessages; Sleep(2); Chars := Chr(Random(255)); // losuj znak Canvas.TextOut(X, I, Chars); // spuszczaj :) znak if (Done) then // Jezeli Done = True to przerwij... Break; END; end; end; Ta procedura odpowiada za rysowanie znaku i odpowiednie go spuszczanie :)) z góry na dół. W procedurze zadeklarowany został także licznik który zlicza ilość wykonanych pętli ( czyli mówiąc inaczej: ilość spuszczonych pasków liter ). Aha! Byłbym zapomniał: musisz jeszcze zadeklarować zmienną "Done", która będzie typu "Boolean". Będzie ona odpowiadała za to, czy animacja jest uruchomiona, czy też nie. No, ale przejdźmy do omawiania naszej procedury. Następuje tam odpowiednie ustawianie rozmiarów czcionki. Później uruchomiona jest procedura losowania ( Randomize ), a następnie losowana zostaje pozycja "X". Zmienna "X" przechowuje wylosowaną liczbę. Liczba ta określa położenie X paska, który będzie zsuwany. Ta liczba losowana jest z zakresu szerokości pulpitu. Następnie wybierany będzie kolor czcionki. Kolor będzie tak jak w Matrixie. Tak jak mówiłem wykorzystany tutaj jest parametr RGB, który oznacza kolory ( czerwony, zielony, niebieski ). W nawiasach podawane są odcienie tychże kolorów. Kolor czerwony ustawiłem o małe natężenie. Kolor zielony na jak najbardziej jaskrawy, a niebieski na 0. Później funkcja "Inc". Ta funkcja to odpowiednik: X := X + 1 znaczy to samo co Inc(x); X := X - 1 znaczy to samo co Dec(x); Czyli krótko mówiąc podnosi ona cyfrę w nawiasie o jeden. Następnie następuje sprawdzenie jaki jest parametr zmiennej "Count". Jeżeli wynosi ona 30 tzn., że spuszczono już 30 pasków. Wtedy odśwież obraz i wyzeruj licznik. Na samym końcu wykonaj pętle. Następuje tutaj spuszczanie pasku od 0 do wylosowanej pozycji Y. Pozycja Y losowana jest z zakresu wysokości pulpitu. Do tej wartości dodawana jest cyfra 100, która zapewnia odpowiednią długość paska. Zmienna "Chars" to zmienna typu "Char", która przechowuje pojedynczy znak. Następnie procedura "Chr" . Czyli do zmiennej "Char" przypisany jest losowany z zakresu 255 znak. Następnie znak ten jest spuszczany na dół. Kod źródłowy w dziale Download. |
Reklama To miejsce czeka na twoją reklame. Więcej informacji w dziale Reklama |